import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait


def wait_sleep():
    driver = webdriver.Chrome()
    driver.get("https://vip.ceshiren.com/")
     # 添加强制等待，让页面渲染完成
    # time.sleep(3)
    # 强制等待的问题：
    # 1.不确定页面的加载时间，可能会因为等待时间过长，而影响代码的执行效率
    # 2.不确定页面的加载时间，可能会因为等待时间过短，而导致代码依然会报错

    # 添加隐式等待
    # 使用方法：1.在代码一开始运行的时候就添加隐式等待的配置，注意：隐式等待是全局生效的，所以
    # 在所有的find_element动作之前就执行此代码
    # 2.注意：隐式等待只能解决元素查找的问题，不能解决元素交互的问题

    driver.implicitly_wait(3)
    driver.find_element(By.XPATH, "//*[text()='个人中心']")

def wait_show():
    driver = webdriver.Chrome()
    driver.get("https://vip.ceshiren.com/#/ui_study")
    # driver.implicitly_wait(3)
    # driver.find_element(By.ID, "success_btn").click()
#     问题：元素可以找到，但是点击效果却没有触发

# 第一个参数是driver，第二个参数是最长等待时间，until方法内需要结合expected_conditions或者自己封装的方法进行使用
# expected_conditions的参数传入的都是一个元组,即多一层小括号
    res = WebDriverWait(driver, 10).until(expected_conditions.element_to_be_clickable((By.ID, "success_btn")))
    res.click()

    # driver.find_element(By.ID, "success_btn").click()

    # 给予弹框显示时间
    time.sleep(3)


if __name__ == '__main__':
    # wait_sleep()
    wait_show()